{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-游戏规则\n",
    "生成10个选择的老虎机，成功返回1，失败0.每个都随机了一个概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 6,
     "status": "ok",
     "timestamp": 1649954376395,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "XSX0v-rJ8YDu",
    "outputId": "e553e987-918f-4741-9198-c98876644680"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机生成了一个10臂伯努利老虎机\n",
      "获奖概率最大的拉杆为1号,其获奖概率为0.7203\n"
     ]
    }
   ],
   "source": [
    "# 导入需要使用的库,其中numpy是支持数组和矩阵运算的科学计算库,而matplotlib是绘图库\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "class BernoulliBandit:\n",
    "    \"\"\" 伯努利多臂老虎机,输入K表示拉杆个数 \"\"\"\n",
    "    def __init__(self, K):\n",
    "        # 均匀分布uniform(low=0.0, high=1.0, size=None)\n",
    "        self.probs = np.random.uniform(size=K)  # 随机生成K个0～1的数,作为拉动每根拉杆的获奖，\n",
    "        # 概率\n",
    "        self.best_idx = np.argmax(self.probs)  # 获奖概率最大的拉杆\n",
    "        self.best_prob = self.probs[self.best_idx]  # 最大的获奖概率\n",
    "        self.K = K\n",
    "\n",
    "    def step(self, k):\n",
    "        # 当玩家选择了k号拉杆后,根据拉动该老虎机的k号拉杆获得奖励的概率返回1（获奖）或0（未\n",
    "        # 获奖）\n",
    "        if np.random.rand() < self.probs[k]:\n",
    "            return 1\n",
    "        else:\n",
    "            return 0\n",
    "        \n",
    "        \n",
    "np.random.seed(1)  # 设定随机种子,使实验具有可重复性\n",
    "K = 10\n",
    "bandit_10_arm = BernoulliBandit(K)  #创建一个10臂伯努利老虎机\n",
    "print(\"随机生成了一个%d臂伯努利老虎机\" % K)\n",
    "print(\"获奖概率最大的拉杆为%d号,其获奖概率为%.4f\" %\n",
    "      (bandit_10_arm.best_idx, bandit_10_arm.best_prob))\n",
    "\n",
    "# 随机生成了一个10臂伯努利老虎机\n",
    "# 获奖概率最大的拉杆为1号,其获奖概率为0.7203"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 记录拉杆、懊悔 P2.2.3\n",
    "\n",
    "当前动作的懊悔=最优的奖励-当前动作的奖励，单次懊悔\n",
    "\n",
    " $𝑅(𝑎^𝑖 )=𝑄^⋆−𝑄(𝑎^𝑖 )$\n",
    "\n",
    "拉T次，把懊悔相加，计算累积懊悔 ：\n",
    "\n",
    "$\\sum_{t=1}^T R\\left(a_t^i\\right)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "executionInfo": {
     "elapsed": 3,
     "status": "ok",
     "timestamp": 1649954377232,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "8gqKHavm8YDy"
   },
   "outputs": [],
   "source": [
    "class Solver:\n",
    "    \"\"\" 多臂老虎机算法基本框架 \"\"\"\n",
    "    def __init__(self, bandit):\n",
    "        self.bandit = bandit    # 传入一个多臂老虎机\n",
    "        self.counts = np.zeros(self.bandit.K)  # 每根拉杆的尝试次数\n",
    "        self.regret = 0.  # 当前步的累积懊悔\n",
    "        self.actions = []  # 维护一个列表,记录每一步的动作\n",
    "        self.regrets = []  # 维护一个列表,记录每一步的累积懊悔\n",
    "\n",
    "    def update_regret(self, k):\n",
    "        # 计算累积懊悔并保存,k为本次动作选择的拉杆的编号\n",
    "        self.regret += self.bandit.best_prob - self.bandit.probs[k] # 累积懊悔=最优拉杆的获奖概率-本次选择拉杆的获奖概率\n",
    "        self.regrets.append(self.regret)    # 保存累积懊悔\n",
    "\n",
    "    #创建一个可扩展的框架，方便为多臂老虎机问题实现不同的策略，只需要继承Solver类并实现run_one_step方法即可\n",
    "    def run_one_step(self):\n",
    "        # 返回当前动作选择哪一根拉杆,由每个具体的策略实现\n",
    "        raise NotImplementedError   # 抛出异常,提示子类必须实现该方法\n",
    "\n",
    "    def run(self, num_steps):\n",
    "        # 运行一定次数,num_steps为总运行次数\n",
    "        for _ in range(num_steps):  # _ 表示不需要使用循环变量,只执行循环体\n",
    "            k = self.run_one_step() # 选择一根拉杆\n",
    "            self.counts[k] += 1 # 选择的拉杆的尝试次数+1\n",
    "            self.actions.append(k)  # 保存选择的拉杆\n",
    "            self.update_regret(k)   # 计算累积懊悔\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 以epsilon的概率进行探索、以1-epsilon的概率进行利用\n",
    "\n",
    "$a_t=\\left\\{\\begin{array}{cl}\\arg \\max _a \\hat{Q}(a) & \\text { 采样概率: } 1-\\epsilon \\\\ U(0,| A |) & \\text { 采样概率: } \\epsilon\\end{array}\\right.$\n",
    "\n",
    "## 最优估计收益(增量更新)\n",
    "$$Q_{n+1}\\left(a^i\\right):=\\frac{1}{n} \\sum_{i=1}^n r_i=\\frac{1}{n}\\left(r_n+\\frac{n-1}{n-1} \\sum_{i=1}^{n-1} r_i\\right)=\\frac{1}{n} r_n+\\frac{n-1}{n} Q_n=Q_n\\left(a^i\\right)+\\frac{1}{n}\\left(r_n-Q_n\\right)$$\n",
    "\n",
    "每一次累计误差项：$\\frac{1}{n}\\left(r_n-Q_n\\right)$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "executionInfo": {
     "elapsed": 2,
     "status": "ok",
     "timestamp": 1649954382967,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "YdD-JGH28YDz"
   },
   "outputs": [],
   "source": [
    "class EpsilonGreedy(Solver):\n",
    "    \"\"\" epsilon贪婪算法,继承Solver类 \"\"\"\n",
    "    def __init__(self, bandit, epsilon=0.01, init_prob=1.0):\n",
    "        super(EpsilonGreedy, self).__init__(bandit) # 调用父类的构造方法，super()是用来调用父类，init()是对象的初始化方法\n",
    "        self.epsilon = epsilon  # 探索概率\n",
    "        #初始化拉动所有拉杆的期望奖励估值\n",
    "        self.estimates = np.array([init_prob] * self.bandit.K)  # 初始化每根拉杆的期望奖励估值，这里初始化为1.0（乐观初始化）\n",
    "\n",
    "    def run_one_step(self):\n",
    "        # 以epsilon的概率进行探索\n",
    "        if np.random.random() < self.epsilon:  \n",
    "            k = np.random.randint(0, self.bandit.K)  # bandit.K列表中随机选择一根拉杆\n",
    "        # \n",
    "        else:   \n",
    "            k = np.argmax(self.estimates)  # 选择期望奖励估值最大的拉杆\n",
    "        r = self.bandit.step(k)  # 得到本次动作的奖励\n",
    "        self.estimates[k] += 1. / (self.counts[k] + 1) * (r -self.estimates[k])    # 更新拉杆k的期望奖励估值\n",
    "        return k"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 312
    },
    "executionInfo": {
     "elapsed": 676,
     "status": "ok",
     "timestamp": 1649954384006,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "wIHh_wRA8YDz",
    "outputId": "d5d65ff2-744d-44e2-ec8a-eb78d13397c2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epsilon-贪婪算法的累积懊悔为： 25.526630933945313\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_results(solvers, solver_names):\n",
    "    \"\"\"生成累积懊悔随时间变化的图像。输入solvers是一个列表,列表中的每个元素是一种特定的策略。\n",
    "    而solver_names也是一个列表,存储每个策略的名称\"\"\"\n",
    "    for idx, solver in enumerate(solvers):\n",
    "        time_list = range(len(solver.regrets))\n",
    "        plt.plot(time_list, solver.regrets, label=solver_names[idx])\n",
    "    plt.xlabel('Time steps')\n",
    "    plt.ylabel('Cumulative regrets')\n",
    "    plt.title('%d-armed bandit' % solvers[0].bandit.K)\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "np.random.seed(1)\n",
    "epsilon_greedy_solver = EpsilonGreedy(bandit_10_arm, epsilon=0.01)  # 传入一个10臂伯努利老虎机，epsilon=0.01\n",
    "epsilon_greedy_solver.run(5000) # 运行5000次\n",
    "print('epsilon-贪婪算法的累积懊悔为：', epsilon_greedy_solver.regret)   # 打印epsilon-贪婪算法的累积懊悔\n",
    "plot_results([epsilon_greedy_solver], [\"EpsilonGreedy\"])    # 绘制epsilon-贪婪算法的累积懊悔随时间变化的图像\n",
    "\n",
    "# epsilon-贪婪算法的累积懊悔为：25.526630933945313"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 295
    },
    "executionInfo": {
     "elapsed": 872,
     "status": "ok",
     "timestamp": 1649954384873,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "hRDFIebd8YD0",
    "outputId": "33430933-becc-41d3-8a85-d46da8f2013c"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(0)\n",
    "epsilons = [1e-4, 0.01, 0.1, 0.25, 0.5] #1e-4表示10的-4次方，即0.0001\n",
    "epsilon_greedy_solver_list = [\n",
    "    EpsilonGreedy(bandit_10_arm, epsilon=e) for e in epsilons   #从5个类中选一种\n",
    "]\n",
    "epsilon_greedy_solver_names = [\"epsilon={}\".format(e) for e in epsilons]\n",
    "for solver in epsilon_greedy_solver_list:\n",
    "    solver.run(5000)\n",
    "\n",
    "plot_results(epsilon_greedy_solver_list, epsilon_greedy_solver_names)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 𝜖 随着时间衰减 \n",
    "（随着时间推移，单步regret越来越小，那么探索并不重要了，我们希望其随时间衰减）\n",
    "\n",
    "$\\epsilon_t=\\min \\left\\{1, \\frac{c| A |}{d^2 t}\\right\\}$\n",
    "\n",
    "$d=c，1/t$的速率减小$\\epsilon_t$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 131
    },
    "executionInfo": {
     "elapsed": 7,
     "status": "error",
     "timestamp": 1649954384874,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "hLIkERHH8YD1",
    "outputId": "0eb1b916-3b0f-4939-83ec-edfad0e79d4e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epsilon值衰减的贪婪算法的累积懊悔为： 10.114334931260183\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "class DecayingEpsilonGreedy(Solver):\n",
    "    \"\"\" epsilon值随时间衰减的epsilon-贪婪算法,继承Solver类 \"\"\"\n",
    "    def __init__(self, bandit, init_prob=1.0):\n",
    "        super(DecayingEpsilonGreedy, self).__init__(bandit)\n",
    "        self.estimates = np.array([init_prob] * self.bandit.K)\n",
    "        self.total_count = 0\n",
    "\n",
    "    def run_one_step(self):\n",
    "        self.total_count += 1\n",
    "        if np.random.random() < 1 / self.total_count:  # epsilon值随时间衰减#####\n",
    "            k = np.random.randint(0, self.bandit.K) #随机选一个\n",
    "        else:\n",
    "            k = np.argmax(self.estimates)   #选个最大回报的\n",
    "\n",
    "        r = self.bandit.step(k) # 得到本次动作的奖励\n",
    "        self.estimates[k] += 1. / (self.counts[k] + 1) * (r - self.estimates[k])    #更新拉杆k的期望\n",
    "\n",
    "        return k\n",
    "\n",
    "np.random.seed(1)   #\n",
    "decaying_epsilon_greedy_solver = DecayingEpsilonGreedy(bandit_10_arm)\n",
    "decaying_epsilon_greedy_solver.run(5000)\n",
    "print('epsilon值衰减的贪婪算法的累积懊悔为：', decaying_epsilon_greedy_solver.regret)\n",
    "plot_results([decaying_epsilon_greedy_solver], [\"DecayingEpsilonGreedy\"])\n",
    "\n",
    "# epsilon值衰减的贪婪算法的累积懊悔为：10.114334931260183"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 基于不确定性测度 UCB\n",
    "核心参数是：控制不确定性比重的系数coef\n",
    "\n",
    "$\\widehat{U}_t(a)=\\sqrt{-\\frac{\\log p}{2 N_t(a)}}$ \n",
    "\n",
    "此时可改写为：\n",
    "\n",
    "$U C B_t(k)=\\hat{\\mu}_k+c \\cdot \\sqrt{\\frac{\\log t}{2 N_k}}$\n",
    "\n",
    "- 动作空间是k个arm中选一个，\n",
    "- $\\hat{\\mu}_t(a)$ ：表示在时间步 $t$ 对动作 $a$ 的当前期望奖励的估计值。\n",
    "- $c$ ：是用于调节探索强度的系数（即置信区间的系数，coefficient）。\n",
    "- $\\log t$ : 表示当前时间步的对数，用来表示随着时间的推移，智能体逐渐减少探索的概率。因为无法获取p,但是p与t正相关。\n",
    "- $N_t(a)$ ：表示到时间步 $t$ 为止动作 $a$ 的选择次数。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 131
    },
    "executionInfo": {
     "elapsed": 461,
     "status": "error",
     "timestamp": 1649954385672,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "O8XF2JjA8YD1",
    "outputId": "1a6b1248-c5c2-40cd-d3e7-5bea8e16e4e9"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第 0 次迭代，第0个拉杆的期望估值为：0.0000\n",
      "第 100 次迭代，第0个拉杆的期望估值为：0.0000\n",
      "第 200 次迭代，第0个拉杆的期望估值为：0.0000\n",
      "第 300 次迭代，第0个拉杆的期望估值为：0.0000\n",
      "第 400 次迭代，第0个拉杆的期望估值为：0.0000\n",
      "第 500 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 600 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 700 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 800 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 900 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 1000 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 1100 次迭代，第0个拉杆的期望估值为：0.2500\n",
      "第 1200 次迭代，第0个拉杆的期望估值为：0.3125\n",
      "第 1300 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1400 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1500 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1600 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1700 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1800 次迭代，第0个拉杆的期望估值为：0.2941\n",
      "第 1900 次迭代，第0个拉杆的期望估值为：0.4231\n",
      "第 2000 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2100 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2200 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2300 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2400 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2500 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2600 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2700 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2800 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 2900 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3000 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3100 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3200 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3300 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3400 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3500 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3600 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3700 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3800 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 3900 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 4000 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 4100 次迭代，第0个拉杆的期望估值为：0.3793\n",
      "第 4200 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4300 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4400 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4500 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4600 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4700 次迭代，第0个拉杆的期望估值为：0.3871\n",
      "第 4800 次迭代，第0个拉杆的期望估值为：0.3939\n",
      "第 4900 次迭代，第0个拉杆的期望估值为：0.3939\n",
      "上置信界算法的累积懊悔为： 70.45281214197854\n"
     ]
    },
    {
     "data": {
      "image/png": "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Dsbo0aNRXV19xf0SkRPZ5dGTRNSmpKenC41GU6990qRJ4o477rC8Hzx4sBg0aJDlfU1NjfD19RUPPPCApa2goEAAEJmZmUIIIf75z3+KESNGWG03Ly9PAKj3RPQ6vXr1Es8//3yDy+qevH7hwgVLm8FgED4+PuLHH3+0WnfKlCliwoQJVp9bu3atZfmff/4pvL29xUcffXTV/RKRc3CMDBE5VO/evS0/e3h4oF27dujVq5elTavVAgCKi4sBAD///DO2b9/eYM/GyZMn0bVr13rtjz76KB555BFs2bIFiYmJSE5Ottrv5U6cOIGKigoMHz7cqr2qqgp9+/a1aktISLD8HBQUhG7duuHXX39t1n6JyP54aYmIHMrLy8vqvUwms2qruxvKbDYDAMrKyjB69GgcPHjQ6nX8+HHcfPPNDe7joYcewu+//44HHngAhw8fRv/+/bFkyZJGayorKwMAbNy40WofR48etRonczW27peI7I9Bhohaleuuuw6//PILoqKiEBMTY/Xy9fVt9HMRERF4+OGH8dlnn2Hu3LlYsWIFAEChUAAATCaTZd24uDgolUrk5ubW20dERITVdnfv3m35+cKFCzh27Bi6d+9+1f0SkXMwyBBRq5KSkoLz589jwoQJ2LdvH06ePIlvvvkGkydPtgojl5o9eza++eYb5OTkYP/+/di+fbslbHTq1AkymQxfffUVzp49i7KyMvj7++Oxxx7DnDlz8N577+HkyZPYv38/lixZgvfee89q2wsXLsS2bdtw5MgRPPjgg2jfvr3lzqwr7ZeInINBhohalfDwcOzatQsmkwkjRoxAr169MHv2bAQEBEAub/hXlslkQkpKCrp3746RI0eia9euWLZsGQCgQ4cOeOGFF/DUU09Bq9VixowZAIB//vOfeO6555CWlmb53MaNGxEdHW217UWLFmHWrFno168fCgsLsWHDBqtensb2S0TOIROilU3DSUTUCnBGYCLXwB4ZIiIiclkMMkREROSyeGmJiIiIXBZ7ZIiIiMhlMcgQERGRy2KQISIiIpfFIENEREQui0GGiIiIXBaDDBEREbksBhkiIiJyWQwyRERE5LIYZIiIiMhl/T+PR/w0WqsoIwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "class UCB(Solver):\n",
    "    \"\"\" UCB算法,继承Solver类 \"\"\"\n",
    "    def __init__(self, bandit, coef, init_prob=1.0):\n",
    "        super(UCB, self).__init__(bandit)\n",
    "        self.total_count = 0\n",
    "        self.estimates = np.array([init_prob] * self.bandit.K)  # 初始化每根拉杆的期望奖励估值\n",
    "        self.coef = coef    # coefficient，控制不确定性比重的系数\n",
    "\n",
    "    def run_one_step(self):\n",
    "        self.total_count += 1\n",
    "        ucb = self.estimates + self.coef * np.sqrt(\n",
    "            np.log(self.total_count) / (2 * (self.counts + 1)))  # 计算上置信界\n",
    "        k = np.argmax(ucb)  # 选出上置信界最大的拉杆\n",
    "        r = self.bandit.step(k)\n",
    "        self.estimates[k] += 1. / (self.counts[k] + 1) * (r -\n",
    "                                                          self.estimates[k])\n",
    "        return k\n",
    "    def run(self, num_steps):\n",
    "        for step in range(num_steps):\n",
    "            k = self.run_one_step()  # 执行一次选择\n",
    "            self.counts[k] += 1\n",
    "            self.actions.append(k)\n",
    "            self.update_regret(k)\n",
    "\n",
    "            # 每1000步打印一次第0个拉杆的期望估值\n",
    "            if step % 100 == 0:\n",
    "                print(f'第 {step} 次迭代，第0个拉杆的期望估值为：{self.estimates[0]:.4f}')\n",
    "\n",
    "\n",
    "np.random.seed(1)\n",
    "coef = 1  # 控制不确定性比重的系数\n",
    "UCB_solver = UCB(bandit_10_arm, coef)\n",
    "UCB_solver.run(5000)\n",
    "print('上置信界算法的累积懊悔为：', UCB_solver.regret)\n",
    "plot_results([UCB_solver], [\"UCB\"])\n",
    "\n",
    "# 上置信界算法的累积懊悔为： 70.45281214197854"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用Beta分布建模每个arm的成功率，初始化成功率分布为Beta(1,1).\n",
    "\n",
    "$f(x ; \\alpha, \\beta)=\\frac{x^{\\alpha-1}(1-x)^{\\beta-1}}{B(\\alpha, \\beta)}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 312
    },
    "executionInfo": {
     "elapsed": 553,
     "status": "ok",
     "timestamp": 1649954387265,
     "user": {
      "displayName": "Sam Lu",
      "userId": "15789059763790170725"
     },
     "user_tz": -480
    },
    "id": "K32HquQ-8YD2",
    "outputId": "b4c0d5cc-961d-4f25-a1db-22b6e12e82eb"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第 0 次迭代，第0个arm的最大奖励概率为：0.5000\n",
      "第 1000 次迭代，第0个arm的最大奖励概率为：0.4500\n",
      "第 2000 次迭代，第0个arm的最大奖励概率为：0.4091\n",
      "第 3000 次迭代，第0个arm的最大奖励概率为：0.4583\n",
      "第 4000 次迭代，第0个arm的最大奖励概率为：0.4444\n",
      "汤普森采样算法的累积懊悔为： 57.19161964443925\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaiUlEQVR4nO3deXxMV/8H8M9kmck+2TcSCSLEvgtaSoidllqqtur2CKVRLU/tXaIbxaP66EL1V49uKNUqTS1tGjslltQSBNksmezbzPn9kebWNAmZZGZuJvm8X6+8XjPn3rnznYvMx7nnnqMQQggQERERWSAruQsgIiIiqi4GGSIiIrJYDDJERERksRhkiIiIyGIxyBAREZHFYpAhIiIii8UgQ0RERBaLQYaIiIgsFoMMERERWSwGGSKq0/bt2weFQoF9+/bdd7/FixdDoVDg1q1b5imsCjZs2ACFQoErV65Ibb1790bv3r1lq4motmGQIbIwOTk5WLRoEQYMGAB3d3coFAps2LCh0v3PnTuHAQMGwMnJCe7u7pgwYQIyMjLMVzCZ1M2bN7F48WKcPHlS7lKIZGEjdwFEZJhbt25h6dKlCAwMRNu2be/b03D9+nU8/PDDUKvVePPNN5GTk4N3330Xp0+fxuHDh6FUKs1XOBnF7t279Z7fvHkTS5YsQVBQENq1aydPUUQyYpAhsjB+fn5ISUmBr68vjh49is6dO1e675tvvonc3FwcO3YMgYGBAIAuXbqgX79+2LBhA5599lmT1ZmbmwtHR0eTHb++Yvgk0sdLS0QWRqVSwdfXt0r7fvvttxgyZIgUYgAgIiICzZo1w1dfffXA11+9ehXTpk1DaGgo7O3t4eHhgccff1xvzAbw91iO/fv3Y9q0afD29kbDhg0BlI7paNWqFU6dOoVevXrBwcEBTZs2xTfffAMA2L9/P7p27Qp7e3uEhobi559/LlfHjRs38NRTT8HHxwcqlQotW7bEp59+Wm6/69evY8SIEXB0dIS3tzdefPFFFBYWVulclbl16xZGjx4NFxcXeHh4YObMmSgoKNDbZ/369ejTpw+8vb2hUqkQFhaGtWvXljtWUFAQhgwZgt9++w1dunSBnZ0dGjdujI0bN5bb98yZM+jTpw/s7e3RsGFDvP7669DpdOX2u3eMzL59+6QgO2XKFCgUigdeaiSqa9gjQ1RH3bhxA+np6ejUqVO5bV26dMEPP/zwwGMcOXIEv//+O8aOHYuGDRviypUrWLt2LXr37o2zZ8/CwcFBb/9p06bBy8sLCxcuRG5urtR+9+5dDBkyBGPHjsXjjz+OtWvXYuzYsfjiiy8wa9YsPP/883jiiSfwzjvvYNSoUUhOToazszMAIC0tDd26dYNCocD06dPh5eWFH3/8EVOnTkVWVhZmzZoFAMjPz0ffvn1x7do1vPDCC/D398fnn3+OX375xaDzNnr0aAQFBSEmJgYHDx7EqlWrcPfuXb3wsXbtWrRs2RLDhg2DjY0NduzYgWnTpkGn0yEqKkrveBcvXsSoUaMwdepUTJo0CZ9++ikmT56Mjh07omXLlgCA1NRUPPLIIygpKcHcuXPh6OiIdevWwd7e/r61tmjRAkuXLsXChQvx7LPP4qGHHgIAdO/e3aDPTGTRBBFZrCNHjggAYv369ZVu27hxY7ltc+bMEQBEQUHBfY+fl5dXri0+Pr7ccdevXy8AiJ49e4qSkhK9/Xv16iUAiE2bNklt58+fFwCElZWVOHjwoNT+008/lfs8U6dOFX5+fuLWrVt6xx07dqxQq9VSje+//74AIL766itpn9zcXNG0aVMBQOzdu/e+n3XRokUCgBg2bJhe+7Rp0wQA8ccff9z3vERGRorGjRvrtTVq1EgAEAcOHJDa0tPThUqlErNnz5baZs2aJQCIQ4cO6e2nVqsFAJGUlCS19+rVS/Tq1Ut6fr+/A0T1AS8tEdVR+fn5AEovRf2TnZ2d3j6VubdHoLi4GLdv30bTpk3h6uqK48ePl9v/mWeegbW1dbl2JycnjB07VnoeGhoKV1dXtGjRAl27dpXayx5fvnwZACCEwLfffouhQ4dCCIFbt25JP5GRkdBoNFIdP/zwA/z8/DBq1CjpeA4ODgaPA/pnj8qMGTOk45e597xoNBrcunULvXr1wuXLl6HRaPReHxYWJvWUAICXlxdCQ0Olz1h27G7duqFLly56+40fP96g2onqI15aIqqjyr5sKxojUjbmw97eHlqtttzt2O7u7lAqlcjPz0dMTAzWr1+PGzduQAgh7fPPL2wACA4OrrCWhg0bQqFQ6LWp1WoEBASUawNKL0UBQEZGBjIzM7Fu3TqsW7euwmOnp6cDKB3P07Rp03LvExoaWuHrKhMSEqL3vEmTJrCystIbFxQXF4dFixYhPj4eeXl5evtrNBrpcwDQG59Uxs3NTfqMZbXfG+iqWztRfcQgQ1RH+fn5AQBSUlLKbUtJSYG7uztUKhWuXLlSLoDs3bsXvXv3xowZM7B+/XrMmjUL4eHhUKvVUCgUGDt2bIUDUSsb01FRL8392ssCU9l7PPnkk5g0aVKF+7Zp06bCdmP5ZzC6dOkS+vbti+bNm2P58uUICAiAUqnEDz/8gBUrVpQ7Lw/6jERUMwwyRHVUgwYN4OXlhaNHj5bbdvjwYWnOEV9fX+zZs0dve9u2bQEA33zzDSZNmoT33ntP2lZQUIDMzEyT1X0vLy8vODs7Q6vVIiIi4r77NmrUCAkJCRBC6IWPxMREg97zwoULesHu4sWL0Ol0CAoKAgDs2LEDhYWF2L59u15vy969ew16n3/WfuHChXLtVan9n0GLqL7hGBmiOmzkyJH4/vvvkZycLLXFxsbizz//xOOPPw6gdLxMRESE3o+bmxuA0t6Ef/YcrF69Glqt1iz1W1tbY+TIkfj222+RkJBQbvu9l8QGDRqEmzdvSrd1A0BeXl6ll6Qqs2bNGr3nq1evBgAMHDhQqglAucts69evN+h97jVo0CAcPHgQhw8fltoyMjLwxRdfPPC1ZXP1mCtcEtU27JEhskD/+c9/kJmZiZs3bwIo7SW4fv06gNLBqWVjNP7973/j66+/xiOPPIKZM2ciJycH77zzDlq3bo0pU6Y88H2GDBmCzz//HGq1GmFhYYiPj8fPP/8MDw8P0324f1i2bBn27t2Lrl274plnnkFYWBju3LmD48eP4+eff8adO3cAlA40/s9//oOJEyfi2LFj8PPzw+eff17uFvEHSUpKwrBhwzBgwADEx8fj//7v//DEE09IvVT9+/eHUqnE0KFD8dxzzyEnJwcfffQRvL29K7yMVxUvv/wyPv/8cwwYMAAzZ86Ubr9u1KgRTp06dd/XNmnSBK6urvjwww/h7OwMR0dHdO3atdLxSkR1jnw3TBFRdZXd1lvRz7236gohREJCgujfv79wcHAQrq6uYvz48SI1NbVK73P37l0xZcoU4enpKZycnERkZKQ4f/68aNSokZg0aZK0X9nt10eOHCl3jF69eomWLVtW+BkGDx5crh2AiIqK0mtLS0sTUVFRIiAgQNja2gpfX1/Rt29fsW7dOr39rl69KoYNGyYcHByEp6enmDlzpti1a5dBt1+fPXtWjBo1Sjg7Ows3Nzcxffp0kZ+fr7fv9u3bRZs2bYSdnZ0ICgoSb731lvj000/Lnf/KPuM/b6EWQohTp06JXr16CTs7O9GgQQPx2muviU8++eSBt18LIcR3330nwsLChI2NDW/FpnpHIQRHnBEREZFl4hgZIiIislgMMkRERGSxGGSIiIjIYskeZG7cuIEnn3wSHh4esLe3R+vWrfXmvRBCYOHChfDz84O9vT0iIiIqnG+BiIiI6h9Zg8zdu3fRo0cP2Nra4scff8TZs2fx3nvvSXNYAMDbb7+NVatW4cMPP8ShQ4fg6OiIyMhIaYp1IiIiqr9kvWtp7ty5iIuLw6+//lrhdiEE/P39MXv2bLz00ksASiee8vHxwYYNG/QWoSMiIqL6R9YgExYWhsjISFy/fh379+9HgwYNMG3aNDzzzDMASlfAbdKkCU6cOCFNpw4AvXr1Qrt27bBy5cpyxywsLNRbJE+n0+HOnTvw8PDgVN5EREQWQgiB7Oxs+Pv7w8qq8gtIss7se/nyZaxduxbR0dH497//jSNHjuCFF16AUqnEpEmTkJqaCgDw8fHRe52Pj4+07Z9iYmKwZMkSk9dOREREppecnIyGDRtWul3WIKPT6dCpUye8+eabAID27dsjISEBH374YaUr3T7IvHnzEB0dLT3XaDQIDAxEcnIyXFxcjFI3ERERmVZWVhYCAgLg7Ox83/1kDTJ+fn4ICwvTa2vRogW+/fZbAKWr8gJAWloa/Pz8pH3S0tL0LjXdS6VSQaVSlWt3cXFhkCEiIrIwDxoWIutdSz169Ci3TP2ff/6JRo0aAQCCg4Ph6+uL2NhYaXtWVhYOHTqE8PBws9ZKREREtY+sPTIvvvgiunfvjjfffBOjR4/G4cOHsW7dOqxbtw5AaQqbNWsWXn/9dYSEhCA4OBgLFiyAv78/RowYIWfpREREVAvIGmQ6d+6MrVu3Yt68eVi6dCmCg4Px/vvvY/z48dI+L7/8MnJzc/Hss88iMzMTPXv2xK5du2BnZydj5URERFQb1PnVr7OysqBWq6HRaO47Rkar1aK4uNiMlRGZj1KpvO/ti0REtU1Vv79l7ZGpDYQQSE1NRWZmptylEJmMlZUVgoODoVQq5S6FiMio6n2QKQsx3t7ecHBw4KR5VOfodDrcvHkTKSkpCAwM5N9xIqpT6nWQ0Wq1Uojx8PCQuxwik/Hy8sLNmzdRUlICW1tbucshIjKaen3RvGxMjIODg8yVEJlW2SUlrVYrcyVERMZVr4NMGXa1U13Hv+NEVFcxyBAREZHFYpCpg/bt2weFQsE7sWqpxYsX6y2xMXnyZE7wSERUTQwyFkahUNz3Z/HixXKXWCts3boV3bp1g1qthrOzM1q2bIlZs2bJXVaFVq5ciQ0bNshdBhGRRarXdy1ZopSUFOnxl19+iYULF+qtV+Xk5ISjR4/KUVqtERsbizFjxuCNN97AsGHDoFAocPbsWezZs0fu0iqkVqvlLoGIyCBCCNzUFKBsTl1XByWcVPJECvbIWBhfX1/pR61WQ6FQ6LU5OTlJ+x47dgydOnWCg4MDunfvXm6BzrVr16JJkyZQKpUIDQ3F559/rrddoVDgv//9L4YMGQIHBwe0aNEC8fHxuHjxInr37g1HR0d0794dly5dkl5Tdtnkv//9LwICAuDg4IDRo0dDo9FI++zbtw9dunSBo6MjXF1d0aNHD1y9etWguj7++GM8+uijcHBwQEhICLZv3y5t37FjB3r06IE5c+YgNDQUzZo1w4gRI7BmzRppn0uXLmH48OHw8fGBk5MTOnfujJ9//lnvfYKCgvD6669j4sSJcHJyQqNGjbB9+3ZkZGRg+PDhcHJyQps2bfSC44YNG+Dq6opt27YhJCQEdnZ2iIyMRHJycqV/pv+8tNS7d2+88MILePnll+Hu7g5fX99yPW3nz59Hz549YWdnh7CwMPz8889QKBTYtm1bpe9DRGQsL2w+iR7LfkHPt/ai51t7sf3kTdlqYZC5hxACeUUlsvyYYqWIV199Fe+99x6OHj0KGxsbPPXUU9K2rVu3YubMmZg9ezYSEhLw3HPPYcqUKdi7d6/eMV577TVMnDgRJ0+eRPPmzfHEE0/gueeew7x583D06FEIITB9+nS911y8eBFfffUVduzYgV27duHEiROYNm0aAKCkpAQjRoxAr169cOrUKcTHx+PZZ5+V7qqpal1LlizB6NGjcerUKQwaNAjjx4/HnTt3AJSGvTNnziAhIaHSc5OTk4NBgwYhNjYWJ06cwIABAzB06FBcu3ZNb78VK1agR48eOHHiBAYPHowJEyZg4sSJePLJJ3H8+HE0adIEEydO1Pvzy8vLwxtvvIGNGzciLi4OmZmZGDt2bFX/2AAAn332GRwdHXHo0CG8/fbbWLp0qdSjpNVqMWLECDg4OODQoUNYt24dXn31VYOOT0T0T5czcvBHcmaVfn67kAEAUFpbQWVjBWsZ0wQvLd0jv1iLsIU/yfLeZ5dGwkFp3D+ON954A7169QIAzJ07F4MHD0ZBQQHs7Ozw7rvvYvLkyVLAiI6OxsGDB/Huu+/ikUcekY4xZcoUjB49GgDwyiuvIDw8HAsWLEBkZCQAYObMmZgyZYre+xYUFGDjxo1o0KABAGD16tUYPHgw3nvvPSiVSmg0GgwZMgRNmjQBALRo0UJ6bVXrmjx5MsaNGwcAePPNN7Fq1SocPnwYAwYMwIwZM/Drr7+idevWaNSoEbp164b+/ftj/PjxUKlUAIC2bduibdu20vFee+01bN26Fdu3b9cLZoMGDcJzzz0HAFi4cCHWrl2Lzp074/HHH9c7J2lpafD19QVQOj/Rf/7zH3Tt2hVAaShp0aIFDh8+jC5dulTpz65NmzZYtGgRACAkJAT/+c9/EBsbi379+mHPnj24dOkS9u3bJ73nG2+8gX79+lXp2ERE/7T9j5t44X8nDH5d3Nw+8HJWmaCiqmOPTB3Wpk0b6bGfnx8AID09HQBw7tw59OjRQ2//Hj164Ny5c5Uew8fHBwDQunVrvbaCggJkZWVJbYGBgVKIAYDw8HDodDokJibC3d0dkydPRmRkJIYOHYqVK1fqjfupTl2Ojo5wcXGRPpujoyN27tyJixcvYv78+XBycsLs2bPRpUsX5OXlASjtkXnppZfQokULuLq6wsnJCefOnSvXI1OVzw/8fV4BwMbGBp07d5aeN2/eHK6uruU+w/3c+75A6Z9f2XskJiYiICBACjEAqhyQiIgqci6l9He4k8oGDVztq/QzskNDeDrJv34be2TuYW9rjbNLI2V7b2O7dyr6sks3Op2uxseo6XHXr1+PF154Abt27cKXX36J+fPnY8+ePejWrVu16iqr4581NGnSBE2aNMHTTz+NV199Fc2aNcOXX36JKVOm4KWXXsKePXvw7rvvomnTprC3t8eoUaNQVFRU6fsY6/Mb6/MREVVVYYkWJdrKhzDczS393fdUz2BE92tmrrKMgkHmHgqFwuiXd2qrFi1aIC4uDpMmTZLa4uLiEBYWVuNjX7t2DTdv3oS/vz8A4ODBg7CyskJoaKi0T/v27dG+fXvMmzcP4eHh2LRpE7p162ayuoKCguDg4IDc3FzpmJMnT8ajjz4KoLSH5sqVKzV6jzIlJSU4evSo1EuSmJiIzMxMvUtoNREaGork5GSkpaVJPUJHjhwxyrGJqO7Zl5iOZz8/hqKSB/9nyFmmO49qwvIqJqOYM2cORo8ejfbt2yMiIgI7duzAli1byt25Ux12dnaYNGkS3n33XWRlZeGFF17A6NGj4evri6SkJKxbtw7Dhg2Dv78/EhMTceHCBUycONFodS1evBh5eXkYNGgQGjVqhMzMTKxatQrFxcXSOJKQkBBs2bIFQ4cOhUKhwIIFC4zW42Fra4sZM2Zg1apVsLGxwfTp09GtWzejXf7p168fmjRpgkmTJuHtt99GdnY25s+fD4BLERD9U0GxFieTM6EzwQ0VluLro9erFGKcVDbo2tjdDBUZF4NMPTVixAisXLkS7777LmbOnIng4GCsX78evXv3rvGxmzZtisceewyDBg3CnTt3MGTIEHzwwQcAShfoPH/+PD777DPcvn0bfn5+iIqKkgbUGqOuXr16Yc2aNZg4cSLS0tLg5uaG9u3bY/fu3VKv0PLly/HUU0+he/fu8PT0xCuvvKI3zqcmHBwc8Morr+CJJ57AjRs38NBDD+GTTz4xyrEBwNraGtu2bcPTTz+Nzp07o3HjxnjnnXcwdOhQ2NnZGe19iOqC6ZtO4OdzaXKXUSv8e1BzTAwPqnS7jZUCNnLeflRNCmGK+35rkaysLKjVamg0Gri4uOhtKygoQFJSEoKDg/kFYCSLFy/Gtm3bcPLkSblLkcWGDRswa9Yssy8PERcXh549e+LixYvS3WD34t91qq8eevsXJN/JR6C7A+xsLe9L2ljcHJRYMaYd/F3t5S6lyu73/X0v9sgQWaCtW7fCyckJISEhuHjxImbOnIkePXpUGGKILMG2EzewMf4KdEb+r3VKZgEAYMOUzmjs5fSAvckSMcgQWaDs7Gy88soruHbtGjw9PREREYH33ntP7rKIqm3VLxdwOSPXJMd2UtnAV82eyLqKl5bY3U71AP+uU22gySvGiA/icPV2+cBS1hMT81hreDkZd4K1Zj7OCPRwMOoxyfR4aYmIiGSl1Qk8s/Eo/kjOBADczi267/7Bno4Y1bEhbC1wwCnJh0EGMMk6R0S1Cf+O1y/7EtPx1q5EFJVoZa3jUiWXikZ1bIiXB4SWa3d3UFrkXTMkr3odZMpmT83Ly4O9veWM5CYyVNmMxdbWxp9BmuQhhMCC7xJwLiW73LZjV+/KUFHlGns64sMJHQEAttZWCPJw4JxHZDT1OshYW1vD1dVVWsPGwYH/uKju0el0yMjIgIODA2xs6vU/+TrlQnoO/u/gtfvus3R4S4T6OJupoopZWSnQuoEadiZYhoUIqOdBBoC08N69i/4R1TVWVlYIDAxkUK8jzqdmYcD7vwIAAtzt8eqg8kt4+LvaoU1DVzNXRmR+9T7IKBQK+Pn5wdvbG8XFxXKXQ2QSSqUSVlYce1AXLN1xFp/GJUnP+7XwxYBWvvd5BVHdVu+DTBlra2uOHyCiWuWrI8n4NC5JWieosESHq7fzpO2vDmqBZx5uLFd5RLUCgwwRkQnodAJF2potRPrh/ku4fKviO38OzHmEc6MQgUGGiMjoCoq1GLzq10pvPzbUijFt4ePy90SGYX4ucHVQGuXYRJaOQYaIqAZ+u3ALMzefQG5RidRWUFyznph7hfo4Y0gbf04SR1QJBhkiovsQQuDq7bxKLxN9eTS50hlrh7fzxxuPtq7R+zvYWsPKinebEVWGQYaI6D5W/3IRy/f8+cD95kSGYng7f+m5tZUCvi52vOWdyMQYZIiI7uPU9UwAgKPSGqpKJnXzdFJieDt/NHTj4Fsic2OQISK6j+yC0rEvy0a2wdC2/g/Ym4jMjaPHiIgqIYTAoaQ7AAAnO/6/j6g24r9MIqqzcgpLsHTHGdzKqXgw7oNcTM+RHgd5OBqrLCIyIgYZIqqzfkpIxVdHr9f4OA1c7RHsySBDVBsxyBBRnVSs1WHR9jMAgPDGHni0fYNqHUehAHo18zJmaURkRAwyRFTnfHfyBtbuu4ScwtKBun2ae2N05wCZqyIiU2CQIaI6ZV9iOmZuPqnXNrYLQwxRXcUgQ0R1yqdxV6THU3oE4ZmHGsPZzla+gojIpBhkiKhO+f3iLQDAjD5NMbt/qMzVEJGpcR4ZIqozSrQ6lOgEAKBfmI/M1RCROTDIEFGdcTI5U3rcyl8tXyFEZDYMMkRUJ1zOyMG3x28AANwdlVwxmqie4BgZIqoTJnxyGDcy8wEA/XlZiajeYI8MEVm8m5n5UogZ2tYfU3sGy1wREZmLrEFm8eLFUCgUej/NmzeXthcUFCAqKgoeHh5wcnLCyJEjkZaWJmPFRFSb3MopxPnULHRf9gsAwM3BFqvHtUeIj7PMlRGRuch+aally5b4+eefpec2Nn+X9OKLL2Lnzp34+uuvoVarMX36dDz22GOIi4uTo1QiqkUupmcjYvkBvbYpPdgTQ1TfyB5kbGxs4OvrW65do9Hgk08+waZNm9CnTx8AwPr169GiRQscPHgQ3bp1M3epRFRLCCH0QoynkxL9W/rihb4hMlZFRHKQPchcuHAB/v7+sLOzQ3h4OGJiYhAYGIhjx46huLgYERER0r7NmzdHYGAg4uPjKw0yhYWFKCwslJ5nZWWZ/DMQkXmNWPN3r+y7j7fFqI4NZayGiOQka5Dp2rUrNmzYgNDQUKSkpGDJkiV46KGHkJCQgNTUVCiVSri6uuq9xsfHB6mpqZUeMyYmBkuWLDFx5URkbtFfncSuhFTkFWmltn5hPgwxRPWcrEFm4MCB0uM2bdqga9euaNSoEb766ivY29tX65jz5s1DdHS09DwrKwsBAVwwjshSlWh1mPjpYfx+6bZee9sAV6yb0FGmqoiotpD90tK9XF1d0axZM1y8eBH9+vVDUVERMjMz9Xpl0tLSKhxTU0alUkGlUpmhWiIypRPX7uL1nedw7Opdqc3dUYnvonoAAPxd7aFQcNI7ovquVs0jk5OTg0uXLsHPzw8dO3aEra0tYmNjpe2JiYm4du0awsPDZaySiMxh3EcH9UJMIw8HxL3SBwHuDghwd4A1Z+4lIsjcI/PSSy9h6NChaNSoEW7evIlFixbB2toa48aNg1qtxtSpUxEdHQ13d3e4uLhgxowZCA8P5x1LRHXY1du5eO37cygo1gEAnn24MR4O8UKHRq6wV1rLXB0R1TayBpnr169j3LhxuH37Nry8vNCzZ08cPHgQXl5eAIAVK1bAysoKI0eORGFhISIjI/HBBx/IWTIRmdiU9Udw+Vau9HzewOa8hERElVIIIYTcRZhSVlYW1Go1NBoNXFxc5C6HiO5jz9k0PLPxKACgS7A7lj3WGo29nGSuiojkUNXv71o12JeI6q+sgmIpxADApqe7wsa6Vg3jI6JaiL8liKhW+GDvJenxpmcYYoioavibgohkp9MJfLi/NMh0DnJD9yaeMldERJaCQYaIZPdpXJL0mAs/EpEhGGSISFYZ2YV4fec56Xn/MB8ZqyEiS8MgQ0SymvvtKenx7hcf5tgYIjIIf2MQkWyKtTrEnk8HAIzs0BDNfJxlroiILA1vvyYis3n9+7P4+LekCrctGhZm5mqIqC5gjwwRmc2PCakVto/s0BAudrZmroaI6gL2yBCR2eQUlgAAvnk+HMGejgAAK4UCrg4MMURUPQwyRGQSBcVarIy9gDs5RVJbdkExAKChmwM8nFRylUZEdQiDDBEZxc9n03Dk6h3p+ZbjN5CRXVhuP5WNFdT27IEhIuNgkCGiGssv0mLaF8dRpNVVuH1OZKj0uH2gK+yV1uYqjYjqOAYZIqoxTX4xirQ6WCmAqT3/npnXXmmDieGN4MnLSERkIgwyRFQtmrxi3MkrHf9y7U4eAMDZzhavDuZt1ERkPgwyRGSwP9Oy0X/FgXLtTir+SiEi8+JvHSIyiCavWC/EOJeFFwUwsmNDmaoiovqKQYaIqkQIgac/OyotKQAAy0e3xWMdGF6ISD6c2ZeIquSnM2l6IWZGn6YMMUQkO/bIEFGVLNqeID0+ubAfXB2UMlZDRFSKQYaI7ksIgTd2nkNaVunkdmue6MAQQ0S1BoMMEVUq+U4eZm4+gePXMgEACgUQ2dJH3qKIiO7BIENEFUrPKsBDb+/Va/vtlT6wsebQOiKqPRhkiEhPfpEWn8Yl4Z2fEqW2nk098c7jbeCntpexMiKi8hhkiEjPztMpeiGmUyM3rJ/SGbbsiSGiWohBhogkuYUl2PB7EgCgpb8Lhrfzx8TwIIYYIqq1GGSICBfTs5GqKcTC7xJw+VYuAKB3qBeefbiJzJUREd0fgwxRPabTCew4dRMzN5/Ua7eztcLjHQPkKYqIyAAMMkT12IzNJ7DzVIr0vLmvMxq6OeA/T7SHna21jJUREVUNgwxRPbXtxA29EPPxxE6ICOMcMURkWRhkiOqhYq0Os748KT0/uzQSDkr+OiAiy8NbEYjqGa1OIGL5fun5rlkPMcQQkcVikCGqZ04m38XV23kAgKFt/dHc10XmioiIqo9BhqgeuZtbhJFr46Xnq8a2k68YIiIjYH8yUR139XYuXvv+LLIKSnA46Y7UPicyFAqFQsbKiIhqjkGGqI776mgyfj6XrtfWq5kXnu/Fye6IyPIxyBDVYXlFJViz9xIAYGSHhujT3Bv2Sit0b+IJayv2xhCR5WOQIaqDvj6ajEsZufjyyDWpbXAbX/RpznliiKhuYZAhqmP+SM7EnG9O6bU1cLVH72beMlVERGQ6DDJEdUSxVofYc2lYsuOs1PZ0z2A4qmwwqXsQrHgpiYjqIAYZojriu5M38dLXf0jPH23fAPOHhMlYERGR6THIEFmwohIdPth3ERnZhTh1XQMAaOThgA6Bbpg3sLnM1RERmR6DDJEFe2PnWXwWf1WvbUr3IEzuESxTRURE5sUgQ2ShLqRl64WYFyOawcXeBqM7B8hYFRGReTHIEFmY/CItfjmfjqhNx6W2uLl90MDVXsaqiIjkwSBDZEG0OoHJ6w/j0D1LDSwd3pIhhojqLS4aSWRB1h24rBdi5g5sjonhQfIVREQkM/bIEFmIvKISvLXrvPT8j4X9oXawlbEiIiL51ZoemWXLlkGhUGDWrFlSW0FBAaKiouDh4QEnJyeMHDkSaWlp8hVJJKP9iRnS470v9WaIISJCLQkyR44cwX//+1+0adNGr/3FF1/Ejh078PXXX2P//v24efMmHnvsMZmqJJKHEAJHrtzBv74oHdzb3NcZwZ6OMldFRFQ7yB5kcnJyMH78eHz00Udwc3OT2jUaDT755BMsX74cffr0QceOHbF+/Xr8/vvvOHjwoIwVE5nX5iPJePzDeOn5jD4hMlZDRFS7yB5koqKiMHjwYEREROi1Hzt2DMXFxXrtzZs3R2BgIOLj4/95GKI66U5uEeZtOS09f/PR1hjcxk/GioiIahdZB/tu3rwZx48fx5EjR8ptS01NhVKphKurq167j48PUlNTKz1mYWEhCgsLpedZWVlGq5fI1Eq0Ooh7nr99z+DenS/0REt/tfmLIiKqxWQLMsnJyZg5cyb27NkDOzs7ox03JiYGS5YsMdrxiMxlxZ4/seqXCxCi/LaIFt4MMUREFTD40lJycjKuX78uPT98+DBmzZqFdevWGXScY8eOIT09HR06dICNjQ1sbGywf/9+rFq1CjY2NvDx8UFRUREyMzP1XpeWlgZfX99Kjztv3jxoNBrpJzk52aC6iMzt1a2n0WrRT1gZW3GIcbGzwZLhrcxfGBGRBTC4R+aJJ57As88+iwkTJiA1NRX9+vVDy5Yt8cUXXyA1NRULFy6s0nH69u2L06dP67VNmTIFzZs3xyuvvIKAgADY2toiNjYWI0eOBAAkJibi2rVrCA8Pr/S4KpUKKpXK0I9FJIv07AJ8ceia9NzO1go/R/eCs+rvW6vtldZQ2sg+nI2IqFYyOMgkJCSgS5cuAICvvvoKrVq1QlxcHHbv3o3nn3++ykHG2dkZrVrp/y/T0dERHh4eUvvUqVMRHR0Nd3d3uLi4YMaMGQgPD0e3bt0MLZuoVtl9JhUf7LuEk8mZUtvel3rDx0UFByXnqSQiqiqDf2MWFxdLPR4///wzhg0bBqD0jqKUlBSjFrdixQpYWVlh5MiRKCwsRGRkJD744AOjvgeRuZ26nolnPz+m1zalRxDnhiEiqgaFEBVdla9c165d8cgjj2Dw4MHo378/Dh48iLZt2+LgwYMYNWqU3viZ2iArKwtqtRoajQYuLi5yl0P13LfHrmP2139Iz18b0QpNvBzRqZE7Lx8REd2jqt/fBvfIvPXWW3j00UfxzjvvYNKkSWjbti0AYPv27dIlJyLSd/1uHj46cBmfxV+V2uYPboEJ3RrJWBURkeUzuEcGALRaLbKysvRm4r1y5QocHR3h5eVl1AJrij0yJKeCYi02HbqGpd+f1WtfO74DBrTyhUKhkKkyIqLazWQ9Mn369MGWLVv0QgwAuLu7Y8SIEfjll18Mr5aojtiXmI6kW7nS8y+PJON8arb0vKW/C14b0QodAt0qejkRERnI4CCzb98+FBUVlWsvKCjAr7/+apSiiCzRD6dTMO2vhR0rMicyFM893Bg21hwLQ0RkLFUOMqdOnZIenz17Vm+ZAK1Wi127dqFBgwbGrY6oFskv0uLIlTvQVnA1Niu/GDM3n5SeD23rLz12UtlgVkQIfFyMN4M1ERGVqnKQadeuHRQKBRQKBfr06VNuu729PVavXm3U4ohqk7lbTuG7kzcfuN+mZ7qiexNPM1RERERVDjJJSUkQQqBx48Y4fPiw3qBepVIJb29vWFtbm6RIotrgUkYOACDIwwFOduX/6VgpFJgYHsQQQ0RkRlUOMo0ald4mqtPpTFYMUW2WW6gFALzzeFt0DnKXuRoiIgKqufr1559/jg8//BBJSUmIj49Ho0aNsGLFCjRu3BjDhw83do1EZpWWVYCnPzuKjOxCvfb07AIApWNeiIiodjD49om1a9ciOjoagwYNQmZmJrTa0v+lurm54f333zd2fURmF3fxFk7f0CA1q0DvRycAZzsbNHSzl7tEIiL6i8H/tVy9ejU++ugjjBgxAsuWLZPaO3XqhJdeesmoxRHJIbeoNJx3b+KBfw9qobctwM0Bzna2Fb2MiIhkYHCQSUpKQvv27cu1q1Qq5ObmVvAKIsuSX1QCAPBxsUOrBmqZqyEiovsx+NJScHAwTp48Wa59165daNGiRfkXEFmYDXFXAAD2St6FR0RU2xncIxMdHY2oqCgUFBRACIHDhw/jf//7H2JiYvDxxx+bokYis9HkF+OmpnRQr48zJ7AjIqrtDA4yTz/9NOzt7TF//nzk5eXhiSeegL+/P1auXImxY8eaokYis8nKL5YeP9UzSL5CiIioSgwKMiUlJdi0aRMiIyMxfvx45OXlIScnB97e3qaqj8iscv8aH+PppOSgXiIiC2BQkLGxscHzzz+Pc+fOAQAcHBzg4OBgksKITOXD/Zfw8a+XoSu/ZBKKtaUTPjooOVcMEZElMPi3dZcuXXDixAlppl8iS/PVkWTcyim/gvu9Wjfk3UpERJbA4CAzbdo0zJ49G9evX0fHjh3h6Oiot71NmzZGK47IFPL+mifmg/EdEOLtVG67QqFAY0/Hcu1ERFT7GBxkygb0vvDCC1KbQqGAEAIKhUKa6Zeotsr7axxMMx9nNK0gyBARkeWo1oR4RJYo+U4eVv9yATmFpUHGgfPEEBFZPIODDMfGkKX64tA1fHX0OgBAZWMFVwfelUREZOkMDjLbt2+vsF2hUMDOzg5NmzZFcHBwjQsjMrbMvNIBvhEtvDHtkaa8M4mIqA4w+Df5iBEjpDEx97p3nEzPnj2xbds2uLm5Ga1QoppKulW6FliPpp7oEMi/m0REdYHBay3t2bMHnTt3xp49e6DRaKDRaLBnzx507doV33//PQ4cOIDbt29zJWyqNTKyC3HqeiYOJd0BADip2BNDRFRXGPwbfebMmVi3bh26d+8utfXt2xd2dnZ49tlncebMGbz//vt46qmnjFooUXUk38lDn/f2oVj7dw9ir2ZeMlZERETGZHCQuXTpElxcXMq1u7i44PLlywCAkJAQ3Lp1q+bVERmgRKvDsat3kV/89xQAJ65lolgroLS2goeTEo91aABvFy4GSURUVxgcZDp27Ig5c+Zg48aN8PIq/Z9tRkYGXn75ZXTu3BkAcOHCBQQEBBi3UqIH+OjXJLy163yF23qHemHdxE5mroiIiEzN4CDzySefYPjw4WjYsKEUVpKTk9G4cWN89913AICcnBzMnz/fuJUSVSKnsAR7z6cj9lwaAMBPbQcPJ6W0XWlthcndg2SqjoiITEkh/nn7URXodDrs3r0bf/75JwAgNDQU/fr1g5WVwWOHTS4rKwtqtRoajabCS2Jk+RZvP4MNv1+Rnq8c2w7D2zWQryAiIqqxqn5/V+v2DSsrKwwYMAC9e/eGSqWCQqGodqFENXE7p1AKMS38XNDS3wURLXzkLYqIiMzG4C4UnU6H1157DQ0aNICTk5O0ZMGCBQvwySefGL1AovtZ8fOf0uOFQ8Lw7uNt4cjbq4mI6g2Dg8zrr7+ODRs24O2334ZS+fc4hFatWuHjjz82anFEFSnR6nD82l0cTrqDMzezAAANXO3RJdhd5sqIiMjcDP6v68aNG7Fu3Tr07dsXzz//vNTetm1bnD9f8R0jRMa0ZMdZfH7wql7bayNawtqKlziJiOobg4PMjRs30LRp03LtOp0OxcXFRimKqDLpWQVSiPFT28FeaY0Grvbo1thD5sqIiEgOBgeZsLAw/Prrr+VWwf7mm2/Qvn17oxVG9VvcxVtI0RSUa3/p6z+kx+smdELrhmpzlkVERLWMwUFm4cKFmDRpEm7cuAGdToctW7YgMTERGzduxPfff2+KGqkOE0Lg9A0NMrILpbYT1zLxn70X7/u6h0I80aoBb6cnIqrvqjWPzK+//oqlS5fijz/+QE5ODjp06ICFCxeif//+pqixRjiPTO125ModPP5hfKXbe4eWXxcpyMMRC4aEcUwMEVEdZpJ5ZEpKSvDmm2/iqaeewp49e2pcJNH51GwAgKuDLRp5OErtKhsrvBwZik5BvBOJiIgqZ1CQsbGxwdtvv42JEyeaqh6qRzT5xVgdewEAMLi1H954tLXMFRERkaUxeIxM3759sX//fgQFBZmgHKpLSrQ6HLiQgaz8kgq3v/nDOaT/NTbGT80VqYmIyHAGB5mBAwdi7ty5OH36NDp27AhHR0e97cOGDTNacWTZ/u/gVSzecfaB+7k52GJ0Z66WTkREhjN4sO/9FoZUKBTQarU1LsqYONhXHqmaAnSLiZWePxTiWeF+Xs4qvD6iFRyUXFaAiIj+ZrJFI3U6XY0Ko7pNpxOIu3QLEz45LLV9MqkT+nIhRyIiMgH+N5hqrKBYi8KS0oD7zGdHcfjKHWnb4DZ+eCTUW67SiIiojmOQoRqJu3gLUzYcQVFJ+Z66FWPa4tH2DWWoioiI6gsGGaqRQ0l3yoWYLkHu2PxsN1hxwjoiIjIxBhmqkfyi0lurn+4ZjFcGNgcA2FgpoFAwxBARkelVfguSGaxduxZt2rSBi4sLXFxcEB4ejh9//FHaXlBQgKioKHh4eMDJyQkjR45EWlqajBXTP+UVld6l5qiyga21FWytrRhiiIjIbKoVZC5duoT58+dj3LhxSE9PBwD8+OOPOHPmjEHHadiwIZYtW4Zjx47h6NGj6NOnD4YPHy4d58UXX8SOHTvw9ddfY//+/bh58yYee+yx6pRMJvDV0WR8cegaAMBBaS1zNUREVB8ZHGT279+P1q1b49ChQ9iyZQtycnIAAH/88QcWLVpk0LGGDh2KQYMGISQkBM2aNcMbb7wBJycnHDx4EBqNBp988gmWL1+OPn36oGPHjli/fj1+//13HDx40NCyyQQ+uGeF6iBPx/vsSUREZBoGB5m5c+fi9ddfx549e6BUKqX2Pn361ChgaLVabN68Gbm5uQgPD8exY8dQXFyMiIgIaZ/mzZsjMDAQ8fGVr5ZM5pGqKcCV23kAgPfHtEP/MM4TQ0RE5mfwYN/Tp09j06ZN5dq9vb1x69Ytgws4ffo0wsPDUVBQACcnJ2zduhVhYWE4efIklEolXF1d9fb38fFBampqpccrLCxEYWGh9DwrK8vgmujBnvzkkPS4bwtvjoshIiJZGBxkXF1dkZKSguDgYL32EydOoEGDBgYXEBoaipMnT0Kj0eCbb77BpEmTsH//foOPUyYmJgZLliyp9uupvGNX7+DEtUzpeUZOIS6ml15SfKxDAzjb2cpUGRER1XcGB5mxY8filVdewddffw2FQgGdToe4uDi89NJLmDhxosEFKJVKNG3aFADQsWNHHDlyBCtXrsSYMWNQVFSEzMxMvV6ZtLQ0+Pr6Vnq8efPmITo6WnqelZWFgAAuSFhdBcVajP/4EAqKK16aIuax1mauiIiI6G8GB5k333wTUVFRCAgIgFarRVhYGLRaLZ544gnMnz+/xgXpdDoUFhaiY8eOsLW1RWxsLEaOHAkASExMxLVr1xAeHl7p61UqFVQqVY3roFKZecUoKNbBSgEMa+svtVspFBjVqSFUNrxbiYiI5GNwkFEqlfjoo4+wYMECJCQkICcnB+3bt0dISIjBbz5v3jwMHDgQgYGByM7OxqZNm7Bv3z789NNPUKvVmDp1KqKjo+Hu7g4XFxfMmDED4eHh6Natm8HvRdWTXVAMAHC2s8X7Y9vLXA0REZE+g4PMb7/9hp49eyIwMBCBgYE1evP09HRMnDgRKSkpUKvVaNOmDX766Sf069cPALBixQpYWVlh5MiRKCwsRGRkJD744IMavScZ5qnPjgAAnFScBJqIiGofhRBCGPICpVKJBg0aYNy4cXjyyScRFhZmqtqMIisrC2q1GhqNBi4uLnKXY1GEEGj66o/Q6gQGt/bDmvEd5C6JiIjqiap+fxs8j8zNmzcxe/Zs7N+/H61atUK7du3wzjvv4Pr16zUqmGqfgmIdtLrSnPv2qDYyV0NERFSewUHG09MT06dPR1xcHC5duoTHH38cn332GYKCgtCnTx9T1EgyKRsfo1BwCQIiIqqdarRoZHBwMObOnYtly5ahdevWNZr/hWqfHadSAHA1ayIiqr2qHWTi4uIwbdo0+Pn54YknnkCrVq2wc+dOY9ZGMvvk18sAgAau9jJXQkREVDGDb0WZN28eNm/ejJs3b6Jfv35YuXIlhg8fDgcHB1PURzLKyCld6mHaI01lroSIiKhiBgeZAwcOYM6cORg9ejQ8PT1NURPVAgXFWhRrSwf6RrasfCZlIiIiORkcZOLi4kxRB9UyR6/cBQBYKQAXO84hQ0REtVOVvqG2b9+OgQMHwtbWFtu3b7/vvsOGDTNKYSSvFE0+AEAnwIG+RERUa1UpyIwYMQKpqanw9vbGiBEjKt1PoVBAq9UaqzaS0W8XbwEAHmtv+IrmRERE5lKlIKPT6Sp8THWX3V+LQeYUlshcCRERUeUMvv1648aNKCwsLNdeVFSEjRs3GqUokl9OUWmACW/iIXMlRERElTN4FOeUKVMwYMAAeHt767VnZ2djypQpmDhxotGKI9PR5Bdj/58ZKNFW3MOWlJELAHBUcqAvERHVXgZ/SwkhKhz8ef36dajVaqMURab32vdn8c2xB6+P5WLPIENERLVXlb+l2rdvD4WidKr6vn37wsbm75dqtVokJSVhwIABJimSjCc9qwA5hSU4n5oFAGjp7wIPJ1WF+/o4q/BwMy9zlkdERGSQKgeZsruVTp48icjISDg5OUnblEolgoKCMHLkSKMXSMazKyEFz//fcb22hUPC0LUxx8EQEZFlqnKQWbRoEQAgKCgIY8aMgZ2dncmKItM4mawBACitrWBna4VgLye0aegqb1FEREQ1YPAAiEmTJpmiDjKD3L9upX6+dxNE92smczVEREQ1Z3CQ0Wq1WLFiBb766itcu3YNRUVFetvv3LljtOLIeFbHXsDnB68CAJxVHMBLRER1g8HzyCxZsgTLly/HmDFjoNFoEB0djcceewxWVlZYvHixCUqkmsotLMF7e/6Ungd6cKVyIiKqGwwOMl988QU++ugjzJ49GzY2Nhg3bhw+/vhjLFy4EAcPHjRFjVRD+xIzpMf/e6Yb+rXwkbEaIiIi4zE4yKSmpqJ169YAACcnJ2g0pQNIhwwZgp07dxq3OjKKt3adBwC4OyoR3sQDVlZcBJKIiOoGg4NMw4YNkZKSAgBo0qQJdu/eDQA4cuQIVKqK5yMheeUXly7kObs/B/gSEVHdYnCQefTRRxEbGwsAmDFjBhYsWICQkBBMnDgRTz31lNELpJrLyi8GADwcwsntiIiobjH49pVly5ZJj8eMGYPAwEDEx8cjJCQEQ4cONWpxVDPp2QUoLNahsKR0PSUXe1uZKyIiIjKuGt+HGx4ejvDwcGPUQkb0zk/nsWbvJb02J952TUREdUyVvtm2b99e5QMOGzas2sWQcQgh8NnvpXPGWFspYKUABrX2gzUH+RIRUR1TpSBTts7SgygUCmi12prUQ0bwwb5LyPlrFt9vng9H+0A3mSsiIiIyjSoFGZ1OZ+o6yIjO3sySHrf0V8tYCRERkWkZfNcS1X65RaW9Me+MagOlDf+IiYio7jJ49OfSpUvvu33hwoXVLoZqJqugGN8eu46L6TkAOLiXiIjqPoO/6bZu3ar3vLi4GElJSbCxsUGTJk0YZGT0efxVvPNTovTc1UEpYzVERESmZ3CQOXHiRLm2rKwsTJ48GY8++qhRiiLDZOYVIeFGFo5dvQsAaNtQjYgWPugS7C5zZURERKalEEIIYxzo9OnTGDp0KK5cuWKMwxlNVlYW1Go1NBoNXFxc5C7HJCKW75cuJwHA6yNa4clujWSsiIiIqGaq+v1ttEEUGo1GWkCSzEerE1KICfF2greLCv3DuLo1ERHVDwYHmVWrVuk9F0IgJSUFn3/+OQYOHGi0wqhqyuaLAYAdM3rCztZaxmqIiIjMy+Ags2LFCr3nVlZW8PLywqRJkzBv3jyjFUZVM39bAgBAaW3FEENERPWOwUEmKSnJFHVQNR29cgcAEOTpIHMlRERE5sfZ0ixYTmEJUjQFAIDV4zrIXA0REZH5GdwjU1BQgNWrV2Pv3r1IT08vt3zB8ePHjVYc3d/V27nS46beTjJWQkREJA+Dg8zUqVOxe/dujBo1Cl26dIFCwRWVze3jXy/j3d2JKNaW3jnf3NeZK1sTEVG9ZHCQ+f777/HDDz+gR48epqiH/kEIgezCEtw728/WEzdQUPx3T1i3xh4yVEZERCQ/g4NMgwYN4OzsbIpaqAKzvjyJ707erHDb+smd0bKBC7yd7cxcFRERUe1g8GDf9957D6+88gquXr1qinroHjqdqDTENPFyRLfGHgwxRERUrxncI9OpUycUFBSgcePGcHBwgK2trd72O3fuGK24+m5j/BXp8cmF/eB4z2rWNlYKjk8iIqJ6z+AgM27cONy4cQNvvvkmfHx8+GVqQolppUsPOKlsuJI1ERFRBQwOMr///jvi4+PRtm1bU9RD98jILp0jZt6g5jJXQkREVDsZHGSaN2+O/Px8U9RSb1W2APmd3CIAgIcje2OIiIgqYnCQWbZsGWbPno033ngDrVu3LjdG5n5LbVN5uYUlGLr6N1y+lVvpPrysREREVDGDg8yAAQMAAH379tVrF0JAoVBAq9Uap7J64nxq1n1DjKeTCi18GQ6JiIgqYnCQ2bt3r9HePCYmBlu2bMH58+dhb2+P7t2746233kJoaKi0T0FBAWbPno3NmzejsLAQkZGR+OCDD+Dj42O0OuSUlV8CoHR23k3PdCu33UllA6UNl8QiIiKqiMFBplevXkZ78/379yMqKgqdO3dGSUkJ/v3vf6N///44e/YsHB0dAQAvvvgidu7cia+//hpqtRrTp0/HY489hri4OKPVIaesgmIAgIeTEu4cC0NERGQQhahspGklDhw4cN/tDz/8cLWLycjIgLe3N/bv34+HH34YGo0GXl5e2LRpE0aNGgUAOH/+PFq0aIH4+Hh061a+B+OfsrKyoFarodFoat34nR9Pp+BfX5QusjmwlS/WPtlR5oqIiIhqh6p+fxvcI9O7d+9ybffOJVOTMTIajQYA4O7uDgA4duwYiouLERERIe3TvHlzBAYGVhpkCgsLUVhYKD3Pysqqdj2m9t6eP6XHjTwcZayEiIjIMhk8+OLu3bt6P+np6di1axc6d+6M3bt3V7sQnU6HWbNmoUePHmjVqhUAIDU1FUqlEq6urnr7+vj4IDU1tcLjxMTEQK1WSz8BAQHVrslU/nf4Gtot3Y2L6aUT3s0d2Bwz+4bIXBUREZHlMbhHRq1Wl2vr168flEoloqOjcezYsWoVEhUVhYSEBPz222/Ven2ZefPmITo6WnqelZVV68LMJ78lITOvdGyMv9oOU3oEQWVjLXNVRERElsfgIFMZHx8fJCYmVuu106dPx/fff48DBw6gYcOGUruvry+KioqQmZmp1yuTlpYGX1/fCo+lUqmgUqmqVYc5nLmpkXpiVo9rj35hPgwxRERE1WRwkDl16pTecyEEUlJSsGzZMrRr186gYwkhMGPGDGzduhX79u1DcHCw3vaOHTvC1tYWsbGxGDlyJAAgMTER165dQ3h4uKGl1wo/nv77kli/MB/Y2TLEEBERVZfBQaZdu3ZQKBTlptXv1q0bPv30U4OOFRUVhU2bNuG7776Ds7OzNO5FrVbD3t4earUaU6dORXR0NNzd3eHi4oIZM2YgPDy8Sncs1UYf/3YZADC2cwBDDBERUQ0ZHGSSkpL0nltZWcHLywt2dnYGv/natWsBlL8Tav369Zg8eTIAYMWKFbCyssLIkSP1JsSzVLbWVigo1qF3qLfcpRAREVk8g+eRsTS1aR4ZnU6gyas/QAjg8Kt94e1sePgjIiKqD6r6/V3l269/+eUXhIWFVTgvi0ajQcuWLfHrr79Wr9p6IqeoBGWx0cXO9v47ExER0QNVOci8//77eOaZZypMRWq1Gs899xyWL19u1OLqmuyC0nWVlNZWUHH9JCIiohqr8rfpH3/8Ia18XZH+/ftXew6Z+iJVkw8AcLaz0ZsNmYiIiKqnykEmLS0NtraVXw6xsbFBRkaGUYqqqxZsOwMAcFQZbfoeIiKieq3KQaZBgwZISEiodPupU6fg5+dnlKLqqoLi0nWoujfxkLkSIiKiuqHKQWbQoEFYsGABCgoKym3Lz8/HokWLMGTIEKMWV9fczSsCADzVM/gBexIREVFVVPkax/z587FlyxY0a9YM06dPR2hoKADg/PnzWLNmDbRaLV599VWTFWrp9iam4+5f6yu5OShlroaIiKhuqHKQ8fHxwe+//45//etfmDdvnjSzr0KhQGRkJNasWQMfHx+TFWrpVuz5U3rs6sBbr4mIiIzBoFGnjRo1wg8//IC7d+/i4sWLEEIgJCQEbm5upqqvzriTW3pZ6e2RbWBrzVuviYiIjKFat8+4ubmhc+fOxq6lTkvPLgQAdA52l7kSIiKiuoNdA2aQXVCMohIdAMCNl5WIiIiMhkHGDK7fzZceq+0ZZIiIiIyFQcYMypYmCPZ05Iy+RERERsQgYwbZBaW3XTvbcUZfIiIiY2KQMYOyHhkGGSIiIuNikDGx/CIt0rNLZ0N2seP4GCIiImNiF4EJHfgzA09/dhRF2tI7ltgjQ0REZFzskTGhuEu3pBCjsrFC71BvmSsiIiKqW9hFYELrf7sCAIju1wzTH2kKKyvesURERGRM7JExIRvr0uDiq7ZjiCEiIjIBBhkT0ekE8oq0AIA+zXlJiYiIyBQYZEzk9l+LRAKAo5JX8IiIiEyBQcYE8ou06PHWLwAAKwVgZ8vTTEREZAr8hjWBSxk50iKRozsFcFkCIiIiE2GQMYEXNp8AALQLcMWykW1kroaIiKjuYpAxMp1O4HJGLgCgdQO1zNUQERHVbQwyRiSEwKBVv0rPXx3cQsZqiIiI6j4GGSM6dvUuzqdmAwB6h3rBztZa5oqIiIjqNgYZI7mYnoNRH8YDKF1TacOULjJXREREVPcxyBjJ5Ywc6fHsfs1krISIiKj+YJAxktyiEgDAQyGemNwjWOZqiIiI6gcGGSPJKSgNMk4qzuJLRERkLgwyRrI+7gqA0vExREREZB4MMkaiyS8GALg6KGWuhIiIqP5gkDGS/OLSla6f6BIocyVERET1B4OMEQghpCDjyDEyREREZsMgYwQFxToIUfrYQclJ8IiIiMyFQcYIcgpLpMeczZeIiMh8GGSM4M+00mUJbK0VsLZSyFwNERFR/cEgYwRlPTIKMMQQERGZE4OMEZRNhtetiYfMlRAREdUvDDJGUNYj48w7loiIiMyKQcYIyoIMlycgIiIyLwYZI8guW2eJyxMQERGZFYOMEfx2MQMAe2SIiIjMjUHGCNz+Wl+p4K/ZfYmIiMg8GGSMoCzAtA1wlbcQIiKieoZBxggKinUAADtbnk4iIiJzkvWb98CBAxg6dCj8/f2hUCiwbds2ve1CCCxcuBB+fn6wt7dHREQELly4IE+x91HWI8PlCYiIiMxL1iCTm5uLtm3bYs2aNRVuf/vtt7Fq1Sp8+OGHOHToEBwdHREZGYmCggIzV3p/+QwyREREspD1NpuBAwdi4MCBFW4TQuD999/H/PnzMXz4cADAxo0b4ePjg23btmHs2LHmLPW+pNuvedcSERGRWdXaQR1JSUlITU1FRESE1KZWq9G1a1fEx8dX+rrCwkJkZWXp/ZiSViegyS8G8PfdS0RERGQetTbIpKamAgB8fHz02n18fKRtFYmJiYFarZZ+AgICTFpn2ay+AOBizx4ZIiIic6q1Qaa65s2bB41GI/0kJyeb9P2yC0p7Y1Q2VlDZcIwMERGROdXaIOPr6wsASEtL02tPS0uTtlVEpVLBxcVF78eUsvL/WjDSztak70NERETl1dogExwcDF9fX8TGxkptWVlZOHToEMLDw2WsTF9Zj4wL11kiIiIyO1m/fXNycnDx4kXpeVJSEk6ePAl3d3cEBgZi1qxZeP311xESEoLg4GAsWLAA/v7+GDFihHxF/0PZHUvODDJERERmJ+u379GjR/HII49Iz6OjowEAkyZNwoYNG/Dyyy8jNzcXzz77LDIzM9GzZ0/s2rULdnZ2cpVcTnbhXz0y9ry0REREZG6yBpnevXtDCFHpdoVCgaVLl2Lp0qVmrMow7JEhIiKST60dI2Mpym6/dlQyyBAREZkbg0wN5ZYFGc7qS0REZHYMMjWUW1i6zpKjinPIEBERmRuDTA3lsEeGiIhINgwyNXT82l0AgIcj11kiIiIyNwaZGsrIKgTAHhkiIiI5MMjUkI21AgDQ2NNJ5kqIiIjqHwaZGsovLh3sy3lkiIiIzI9BpgZ0OoGCYh0AwF7Ju5aIiIjMjUGmBgpKtNJje1sGGSIiInNjkKmB/CIGGSIiIjkxyNRA2fgYlY0VrKwUMldDRERU/zDI1EBZjwzHxxAREcmDQaYGynpkHHhZiYiISBYMMjVQ1iNjxx4ZIiIiWTDI1EDeXz0yHOhLREQkDwaZGij4q0fGgT0yREREsmCQqYGyMTJ27JEhIiKSBYNMDeQV8dISERGRnBhkaqCgmJeWiIiI5MQgUwOcR4aIiEheDDI1kMcxMkRERLJikKmBfN61REREJCsGmRoo4DwyREREsmKQqYGyu5Z4aYmIiEgeDDI1IK21pLSRuRIiIqL6iUGmBqRLS0qeRiIiIjnwG7gG/p4Qjz0yREREcmCQqQHOI0NERCQvBpka4F1LRERE8mKQqYE8ziNDREQkKwaZGuDq10RERPJikKmBv4MMTyMREZEc+A1cTUIIFJXoALBHhoiISC4MMtVUpNVJj5U2PI1ERERy4DdwNRWW/B1kVAwyREREsuA3cDUV3RNklNY8jURERHLgN3A1lfXIKG2soFAoZK6GiIiofmKQqabCv+5Y4mUlIiIi+fBbuJrKBvsyyBAREcmH38LVVFhcFmR46zUREZFcGGSq6d4xMkRERCQPfgtXU15RCQAuGElERCQnBplqyueCkURERLJjkKmmspWv7RlkiIiIZMMgU015xeyRISIikhuDTDXl/zVGxkFpI3MlRERE9ReDTDXx0hIREZH8LCLIrFmzBkFBQbCzs0PXrl1x+PBhuUv6e7Av71oiIiKSTa0PMl9++SWio6OxaNEiHD9+HG3btkVkZCTS09NlrSufY2SIiIhkV+uDzPLly/HMM89gypQpCAsLw4cffggHBwd8+umncpcGpY0V7DlGhoiISDa1+lu4qKgIx44dw7x586Q2KysrREREID4+vsLXFBYWorCwUHqelZVlktqWDm+FpcNbQQhhkuMTERHRg9XqHplbt25Bq9XCx8dHr93HxwepqakVviYmJgZqtVr6CQgIMGmNCoXCpMcnIiKiytXqIFMd8+bNg0ajkX6Sk5PlLomIiIhMpFZfWvL09IS1tTXS0tL02tPS0uDr61vha1QqFVQqlTnKIyIiIpnV6h4ZpVKJjh07IjY2VmrT6XSIjY1FeHi4jJURERFRbVCre2QAIDo6GpMmTUKnTp3QpUsXvP/++8jNzcWUKVPkLo2IiIhkVuuDzJgxY5CRkYGFCxciNTUV7dq1w65du8oNACYiIqL6RyHq+P3DWVlZUKvV0Gg0cHFxkbscIiIiqoKqfn/X6jEyRERERPfDIENEREQWi0GGiIiILBaDDBEREVksBhkiIiKyWAwyREREZLEYZIiIiMhi1foJ8WqqbJqcrKwsmSshIiKiqir73n7QdHd1PshkZ2cDAAICAmSuhIiIiAyVnZ0NtVpd6fY6P7OvTqfDzZs34ezsDIVCYbTjZmVlISAgAMnJyZwx2MR4rs2D59k8eJ7Ng+fZPEx5noUQyM7Ohr+/P6ysKh8JU+d7ZKysrNCwYUOTHd/FxYX/SMyE59o8eJ7Ng+fZPHiezcNU5/l+PTFlONiXiIiILBaDDBEREVksBplqUqlUWLRoEVQqldyl1Hk81+bB82wePM/mwfNsHrXhPNf5wb5ERERUd7FHhoiIiCwWgwwRERFZLAYZIiIislgMMkRERGSxGGSqac2aNQgKCoKdnR26du2Kw4cPy11SrXbgwAEMHToU/v7+UCgU2LZtm952IQQWLlwIPz8/2NvbIyIiAhcuXNDb586dOxg/fjxcXFzg6uqKqVOnIicnR2+fU6dO4aGHHoKdnR0CAgLw9ttvm/qj1RoxMTHo3LkznJ2d4e3tjREjRiAxMVFvn4KCAkRFRcHDwwNOTk4YOXIk0tLS9Pa5du0aBg8eDAcHB3h7e2POnDkoKSnR22ffvn3o0KEDVCoVmjZtig0bNpj649Uqa9euRZs2baRJwMLDw/Hjjz9K23mejW/ZsmVQKBSYNWuW1MbzbByLFy+GQqHQ+2nevLm0vdafZ0EG27x5s1AqleLTTz8VZ86cEc8884xwdXUVaWlpcpdWa/3www/i1VdfFVu2bBEAxNatW/W2L1u2TKjVarFt2zbxxx9/iGHDhong4GCRn58v7TNgwADRtm1bcfDgQfHrr7+Kpk2binHjxknbNRqN8PHxEePHjxcJCQnif//7n7C3txf//e9/zfUxZRUZGSnWr18vEhISxMmTJ8WgQYNEYGCgyMnJkfZ5/vnnRUBAgIiNjRVHjx4V3bp1E927d5e2l5SUiFatWomIiAhx4sQJ8cMPPwhPT08xb948aZ/Lly8LBwcHER0dLc6ePStWr14trK2txa5du8z6eeW0fft2sXPnTvHnn3+KxMRE8e9//1vY2tqKhIQEIQTPs7EdPnxYBAUFiTZt2oiZM2dK7TzPxrFo0SLRsmVLkZKSIv1kZGRI22v7eWaQqYYuXbqIqKgo6blWqxX+/v4iJiZGxqosxz+DjE6nE76+vuKdd96R2jIzM4VKpRL/+9//hBBCnD17VgAQR44ckfb58ccfhUKhEDdu3BBCCPHBBx8INzc3UVhYKO3zyiuviNDQUBN/otopPT1dABD79+8XQpSeU1tbW/H1119L+5w7d04AEPHx8UKI0sBpZWUlUlNTpX3Wrl0rXFxcpPP68ssvi5YtW+q915gxY0RkZKSpP1Kt5ubmJj7++GOeZyPLzs4WISEhYs+ePaJXr15SkOF5Np5FixaJtm3bVrjNEs4zLy0ZqKioCMeOHUNERITUZmVlhYiICMTHx8tYmeVKSkpCamqq3jlVq9Xo2rWrdE7j4+Ph6uqKTp06SftERETAysoKhw4dkvZ5+OGHoVQqpX0iIyORmJiIu3fvmunT1B4ajQYA4O7uDgA4duwYiouL9c5z8+bNERgYqHeeW7duDR8fH2mfyMhIZGVl4cyZM9I+9x6jbJ/6+vdfq9Vi8+bNyM3NRXh4OM+zkUVFRWHw4MHlzgXPs3FduHAB/v7+aNy4McaPH49r164BsIzzzCBjoFu3bkGr1er9gQGAj48PUlNTZarKspWdt/ud09TUVHh7e+ttt7Gxgbu7u94+FR3j3veoL3Q6HWbNmoUePXqgVatWAErPgVKphKurq96+/zzPDzqHle2TlZWF/Px8U3ycWun06dNwcnKCSqXC888/j61btyIsLIzn2Yg2b96M48ePIyYmptw2nmfj6dq1KzZs2IBdu3Zh7dq1SEpKwkMPPYTs7GyLOM91fvVrovooKioKCQkJ+O233+Qupc4KDQ3FyZMnodFo8M0332DSpEnYv3+/3GXVGcnJyZg5cyb27NkDOzs7ucup0wYOHCg9btOmDbp27YpGjRrhq6++gr29vYyVVQ17ZAzk6ekJa2vrciO209LS4OvrK1NVlq3svN3vnPr6+iI9PV1ve0lJCe7cuaO3T0XHuPc96oPp06fj+++/x969e9GwYUOp3dfXF0VFRcjMzNTb/5/n+UHnsLJ9XFxcLOKXnrEolUo0bdoUHTt2RExMDNq2bYuVK1fyPBvJsWPHkJ6ejg4dOsDGxgY2NjbYv38/Vq1aBRsbG/j4+PA8m4irqyuaNWuGixcvWsTfZwYZAymVSnTs2BGxsbFSm06nQ2xsLMLDw2WszHIFBwfD19dX75xmZWXh0KFD0jkNDw9HZmYmjh07Ju3zyy+/QKfToWvXrtI+Bw4cQHFxsbTPnj17EBoaCjc3NzN9GvkIITB9+nRs3boVv/zyC4KDg/W2d+zYEba2tnrnOTExEdeuXdM7z6dPn9YLjXv27IGLiwvCwsKkfe49Rtk+9f3vv06nQ2FhIc+zkfTt2xenT5/GyZMnpZ9OnTph/Pjx0mOeZ9PIycnBpUuX4OfnZxl/n2s8XLge2rx5s1CpVGLDhg3i7Nmz4tlnnxWurq56I7ZJX3Z2tjhx4oQ4ceKEACCWL18uTpw4Ia5evSqEKL392tXVVXz33Xfi1KlTYvjw4RXeft2+fXtx6NAh8dtvv4mQkBC9268zMzOFj4+PmDBhgkhISBCbN28WDg4O9eb263/9619CrVaLffv26d1GmZeXJ+3z/PPPi8DAQPHLL7+Io0ePivDwcBEeHi5tL7uNsn///uLkyZNi165dwsvLq8LbKOfMmSPOnTsn1qxZU+9uV507d67Yv3+/SEpKEqdOnRJz584VCoVC7N69WwjB82wq9961JATPs7HMnj1b7Nu3TyQlJYm4uDgREREhPD09RXp6uhCi9p9nBplqWr16tQgMDBRKpVJ06dJFHDx4UO6SarW9e/cKAOV+Jk2aJIQovQV7wYIFwsfHR6hUKtG3b1+RmJiod4zbt2+LcePGCScnJ+Hi4iKmTJkisrOz9fb5448/RM+ePYVKpRINGjQQy5YtM9dHlF1F5xeAWL9+vbRPfn6+mDZtmnBzcxMODg7i0UcfFSkpKXrHuXLlihg4cKCwt7cXnp6eYvbs2aK4uFhvn71794p27doJpVIpGjdurPce9cFTTz0lGjVqJJRKpfDy8hJ9+/aVQowQPM+m8s8gw/NsHGPGjBF+fn5CqVSKBg0aiDFjxoiLFy9K22v7eVYIIUTN+3WIiIiIzI9jZIiIiMhiMcgQERGRxWKQISIiIovFIENEREQWi0GGiIiILBaDDBEREVksBhkiIiKyWAwyRGQ0kydPxogRI+Qug4jqEa5+TURVolAo7rt90aJFWLlyJWrbHJv79u3DI488grt378LV1VXucojIyBhkiKhKUlJSpMdffvklFi5ciMTERKnNyckJTk5OcpRGRPUYLy0RUZX4+vpKP2q1GgqFQq/Nycmp3KWl3r17Y8aMGZg1axbc3Nzg4+ODjz76CLm5uZgyZQqcnZ3RtGlT/Pjjj3rvlZCQgIEDB8LJyQk+Pj6YMGECbt26VWltV69exdChQ+Hm5gZHR0e0bNkSP/zwA65cuYJHHnkEAODm5gaFQoHJkycDKF2tOiYmBsHBwbC3t0fbtm3xzTffSMfct28fFAoFdu7ciTZt2sDOzg7dunVDQkLCA9+XiMyHQYaITOqzzz6Dp6cnDh8+jBkzZuBf//oXHn/8cXTv3h3Hjx9H//79MWHCBOTl5QEAMjMz0adPH7Rv3x5Hjx7Frl27kJaWhtGjR1f6HlFRUSgsLMSBAwdw+vRpvPXWW3ByckJAQAC+/fZbAEBiYiJSUlKwcuVKAEBMTAw2btyIDz/8EGfOnMGLL76IJ598Evv379c79pw5c/Dee+/hyJEj8PLywtChQ1FcXHzf9yUiMzLK0pNEVK+sX79eqNXqcu2TJk0Sw4cPl5736tVL9OzZU3peUlIiHB0dxYQJE6S2lJQUAUDEx8cLIYR47bXXRP/+/fWOm5ycLACUWxG9TOvWrcXixYsr3Fa28vrdu3eltoKCAuHg4CB+//13vX2nTp0qxo0bp/e6zZs3S9tv374t7O3txZdffvnA9yUi8+AYGSIyqTZt2kiPra2t4eHhgdatW0ttPj4+AID09HQAwB9//IG9e/dW2LNx6dIlNGvWrFz7Cy+8gH/961/YvXs3IiIiMHLkSL33/aeLFy8iLy8P/fr102svKipC+/bt9drCw8Olx+7u7ggNDcW5c+eq9b5EZHy8tEREJmVra6v3XKFQ6LWV3Q2l0+kAADk5ORg6dChOnjyp93PhwgU8/PDDFb7H008/jcuXL2PChAk4ffo0OnXqhNWrV1daU05ODgBg586deu9x9uxZvXEyD2Lo+xKR8THIEFGt0qFDB5w5cwZBQUFo2rSp3o+jo2OlrwsICMDzzz+PLVu2YPbs2fjoo48AAEqlEgCg1WqlfcPCwqBSqXDt2rVy7xEQEKB33IMHD0qP7969iz///BMtWrR44PsSkXkwyBBRrRIVFYU7d+5g3LhxOHLkCC5duoSffvoJU6ZM0Qsj95o1axZ++uknJCUl4fjx49i7d68UNho1agSFQoHvv/8eGRkZyMnJgbOzM1566SW8+OKL+Oyzz3Dp0iUcP34cq1evxmeffaZ37KVLlyI2NhYJCQmYPHkyPD09pTuz7ve+RGQeDDJEVKv4+/sjLi4OWq0W/fv3R+vWrTFr1iy4urrCyqriX1larRZRUVFo0aIFBgwYgGbNmuGDDz4AADRo0ABLlizB3Llz4ePjg+nTpwMAXnvtNSxYsAAxMTHS63bu3Ing4GC9Yy9btgwzZ85Ex44dkZqaih07duj18lT2vkRkHgohatk0nEREtQBnBCayDOyRISIiIovFIENEREQWi5eWiIiIyGKxR4aIiIgsFoMMERERWSwGGSIiIrJYDDJERERksRhkiIiIyGIxyBAREZHFYpAhIiIii8UgQ0RERBaLQYaIiIgs1v8DlUXn/pHCrLYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "class ThompsonSampling(Solver):\n",
    "    \"\"\" 汤普森采样算法,继承Solver类 \"\"\"\n",
    "    def __init__(self, bandit):\n",
    "        super(ThompsonSampling, self).__init__(bandit)  #初始化父类的一些基础属性，将 bandit 传递给父类\n",
    "        self._a = np.ones(self.bandit.K)  # 列表,表示每根拉杆奖励为1的次数\n",
    "        self._b = np.ones(self.bandit.K)  # 列表,表示每根拉杆奖励为0的次数\n",
    "\n",
    "    def run_one_step(self):\n",
    "        samples = np.random.beta(self._a, self._b)  # 按照Beta分布采样一组奖励样本\n",
    "        k = np.argmax(samples)  # 选出采样奖励最大的拉杆\n",
    "        r = self.bandit.step(k)\n",
    "\n",
    "        self._a[k] += r  # 更新Beta分布的第一个参数\n",
    "        self._b[k] += (1 - r)  # 更新Beta分布的第二个参数\n",
    "        return k\n",
    "    '''\n",
    "    为了直观看看每个arm获奖期望的下降，重新实现一个run方法，每1000步打印一次第0个拉杆的最大奖励概率\n",
    "    初始化时，每个arm的Beta分布参数都是(1,1)，所以每个arm的期望奖励概率都是0.5（要么奖励要么无）\n",
    "    ''' \n",
    "    def run(self, num_steps):\n",
    "        for step in range(num_steps):\n",
    "            k = self.run_one_step()  # 选择拉杆\n",
    "            self.counts[k] += 1\n",
    "            self.actions.append(k)\n",
    "            self.update_regret(k)\n",
    "\n",
    "            # 每1000步打印一次第0个拉杆的最大奖励概率\n",
    "            if step % 1000 == 0:\n",
    "                prob_arm_0 = self._a[0] / (self._a[0] + self._b[0])  # 计算第0个拉杆的期望奖励概率\n",
    "                print(f'第 {step} 次迭代，第0个arm的最大奖励概率为：{prob_arm_0:.4f}')\n",
    "\n",
    "np.random.seed(1)\n",
    "thompson_sampling_solver = ThompsonSampling(bandit_10_arm)\n",
    "thompson_sampling_solver.run(5000)\n",
    "print('汤普森采样算法的累积懊悔为：', thompson_sampling_solver.regret)\n",
    "plot_results([thompson_sampling_solver], [\"ThompsonSampling\"])\n",
    "\n",
    "# 汤普森采样算法的累积懊悔为：57.19161964443925"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "第2章-多臂老虎机问题.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "rl2024",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
